package com.javasm.mingming.webuser.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.javasm.mingming.common.RedisKeys;
import com.javasm.mingming.webuser.dao.WebUserDao;
import com.javasm.mingming.webuser.entity.WebUser;
import com.javasm.mingming.webuser.entity.WebUserInfo;
import com.javasm.mingming.webuser.service.WebUserInfoService;
import com.javasm.mingming.webuser.service.WebUserService;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * (WebUser)表服务实现类
 *
 * @author makejava
 * @since 2025-02-28 09:56:57
 */
@Service("webUserService")
public class WebUserServiceImpl extends ServiceImpl<WebUserDao, WebUser> implements WebUserService {


    @Resource
    WebUserInfoService webUserInfoService;

    @Resource
    RedisTemplate<String,Object> redisTemplate;

    @Override
    public WebUser getByUname(String username) {
        System.out.println("11111111111");
        //因为➕了Redis，所以需要修改这个登录功能，直接从缓存中查询
        //不要想别的功能，当前的方法就一个责任，根据用户名，查用户信息
////        不要想别的功能，根据用户名，查用户信息
//        //用到mybatis plus 中根据条件查询中的好几种情况，这只是其中的一种
//        LambdaQueryWrapper<WebUser>  queryWrapper = new LambdaQueryWrapper<>();
//        queryWrapper.eq(WebUser::getUsername,username);
//        WebUser webUser = getOne(queryWrapper);
//        //刚才这个功能只是找到这个页面，现在要做的是把这个页面的功能对应的信息也给查出来
//        //但是对应的信息在另一张表中，如何实现一个查询，同时查找两个表的中的内容？
//        //查询用户详情，
//        if (webUser != null && webUser.getUid() !=null){
//            WebUserInfo userInfo = webUserInfoService.getById(webUser.getUid());
//            webUser.setUserInfo(userInfo);
//        }
        //代码解释
        //这段代码的功能是从Redis缓存中根据用户名查询用
        // 户信息。首先，它生成一个Redis键，然后从Redis中获取该键对应的值。如果存在该值，
        // 则将其转换为WebUser对象并返回；否则返回null
        String key = String.format(RedisKeys.User_Uname,username);
        Object o = redisTemplate.opsForValue().get(key);
        System.out.println(o);
        if(o != null){
            return (WebUser) o;


        }
        return null;

    }
}


